package doublePointer;
/*
* 844.比较含退格的字符串
* */
public class BackspaceCompare844 {
        public boolean backspaceCompare(String S, String T) {
            int i = S.length() - 1, j = T.length() - 1;
            int skipS = 0, skipT = 0;

            while (i >= 0 || j >= 0) { //外层循环,用来遍历字符串,当s或者t中的一个遍历完后退出循环
                while (i >= 0) {// 遍历s,当遍历字符不是#且skipS等于0时跳出循环,   因为此时遍历到的字符一定会留下来不会被清除掉.
                    if (S.charAt(i) == '#') {
                        skipS++;
                        i--;
                    } else if (skipS > 0) {
                        skipS--;
                        i--;
                    } else {
                        break;
                    }
                }
                while (j >= 0) {// 同上
                    if (T.charAt(j) == '#') {
                        skipT++;
                        j--;
                    } else if (skipT > 0) {
                        skipT--;
                        j--;
                    } else {
                        break;
                    }
                }
                // 跳出循环后,s和t遍历到的字符都是不会被清除掉的, 比较一下,不一样直接false返回
                if (i >= 0 && j >= 0) {
                    if (S.charAt(i) != T.charAt(j)) {
                        return false;
                    }
                } else {
                    // s或者t只有一个遍历结束, 说明不相同,直接false
                    if (i >= 0 || j >= 0) {
                        return false;
                    }
                }
                i--;
                j--;
            }
            return true;
        }

}
